/**
 *
 */
package com.ozq.common.dao.entity;

import java.io.Serializable;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * <统一返回json处理包信息> <功能详细描述>
 * 
 * @author 欧增奇
 * @version [版本号, 2017年7月12日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class SpringJson implements Serializable
{
    static Logger logger = LoggerFactory.getLogger(SpringJson.class);

    /**
     * 序列化ID
     */
    private static final long serialVersionUID = -1813361980838961146L;

    /**
     * 成功
     */
    public static final Integer SUCCESS = 0;
    /**
     * 失败
     */
    public static final Integer FAIL = -1;

    /**
     * 返回编码
     */
    private Integer code;

    /**
     * 具体信息
     */
    private String message;

    /**
     * 具体数据
     */
    private Object data;

    /**
     * 默认的构造方法
     */
    public SpringJson()
    {
        this.code = SUCCESS;
        this.message = "操作成功！";
    }

    /**
     * 默认成功返回的数据 构造方法
     * 
     * @param data
     *            业务数据
     */
    public SpringJson(Object data)
    {
        this();
        this.data = data;
    }

    /**
     * 构造方法,Boolean结果
     * 
     * @param result
     *            业务结果
     */
    public SpringJson(Boolean result)
    {
        if (BooleanUtils.isTrue(result))
        {
            this.code = SUCCESS;
            this.message = "操作成功！";
        } else
        {
            this.code = FAIL;
            this.message = "操作失败！";
        }
    }

    /**
     * 构造方法,Boolean结果,数据
     * 
     * @param result
     *            业务结果
     * @param data
     *            业务数据
     */
    public SpringJson(Boolean result, Object data)
    {
        this(result);
        this.data = data;
    }

    /**
     * code和信息的构造方法
     * 
     * @param code
     *            业务编码
     * @param message
     *            业务信息
     */
    public SpringJson(Integer code, String message)
    {
        this.code = code;
        this.message = message;
    }

    /**
     * 全的构造方法
     * 
     * @param code
     *            业务编码
     * @param message
     *            业务信息
     * @param data
     *            业务数据
     */
    public SpringJson(Integer code, String message, Object data)
    {
        this(code, message);
        this.data = data;
    }

    /**
     * 获取-返回编码
     * 
     * @return code 返回编码
     */
    public Integer getCode()
    {
        return code;
    }

    /**
     * 设置-返回编码
     * 
     * @param code
     *            返回编码
     */
    public void setCode(Integer code)
    {
        this.code = code;
    }

    /**
     * 获取-具体信息
     * 
     * @return message 具体信息
     */
    public String getMessage()
    {
        return message;
    }

    /**
     * 设置-具体信息
     * 
     * @param message
     *            具体信息
     */
    public void setMessage(String message)
    {
        this.message = message;
    }

    /**
     * 获取-具体数据
     * 
     * @return data 具体数据
     */
    public Object getData()
    {
        return data;
    }

    /**
     * 设置-具体数据
     * 
     * @param data
     *            具体数据
     */
    public void setData(Object data)
    {
        this.data = data;
    }

    /*
     * (non-Javadoc)
     * 
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString()
    {
        return ToStringBuilder.reflectionToString(this);
    }
}
